/*                                                                                                   
 _____      _           _            ______             
|  __ \    (_)         | |           | ___ \            
| |  \/_ __ _ _ __   __| | ___ _ __  | |_/ / ___  _   _ 
| | __| '__| | '_ \ / _` |/ _ \ '__| | ___ \/ _ \| | | |
| |_\ \ |  | | | | | (_| |  __/ |    | |_/ / (_) | |_| |
 \____/_|  |_|_| |_|\__,_|\___|_|    \____/ \___/ \__, |
                                                   __/ |
                                                  |___/ 

FILENAME        : Registers.hpp
CREATED         : 2011-05-15
DESCRIPTION     : LR35902 Cpu registers definitions

*/

#ifndef __GUID_1A8C5EDB_C09F_49ED_BC8E_76B9EBD083F9__
#define __GUID_1A8C5EDB_C09F_49ED_BC8E_76B9EBD083F9__

#include "../../../Types.hpp"

namespace GrinderBoy
{
    namespace Kernel
    {
        namespace CPU
        {
            namespace Sharp
            {
                namespace LR35902
                {
                    ///<documentation language="en-US">
                    ///<sumary>
                    ///Definition of LR35902 internal registers.
                    ///</sumary>
                    ///</documentation>
                    class Registers
                    {
                        private:

                        protected:
                            ///<documentation language="en-US">
                            ///<sumary>
                            ///Storage area for the registers.
                            ///</sumary>
                            ///</documentation>
                            GrinderBoy::Kernel::UInt8* _registerArea;
                        public:
                            const GrinderBoy::Kernel::UInt8 registerA;
                            ///<documentation language="en-US">
                            ///<sumary>
                            ///Creates new instance of registers.
                            ///</sumary>
                            ///</documentation>
                            Registers();
                            ///<documentation language="en-US">
                            ///<sumary>
                            ///Destroys the instance of the registers.
                            ///</sumary>
                            ///</documentation>
                            virtual ~Registers();
                    };
                }
            }
        }
    }
}

#endif // __GUID_1A8C5EDB_C09F_49ED_BC8E_76B9EBD083F9__